package com.dubbo.service.impl;

import com.dubbo.common.ResponseUtil;
import com.dubbo.common.check.CheckUtil;
import com.dubbo.domain.Banner;
import com.dubbo.domain.info.ResultMessage;
import com.dubbo.mapper.ArticleMapper;
import com.dubbo.mapper.BannerMapper;
import com.dubbo.mapper.OrderMapper;
import com.dubbo.mapper.other.DictMapper;
import com.dubbo.service.business.home.HomeService;
import com.dubbo.service.impl.base.BaseServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;


/**
 * 首页ServiceImpl
 * @author wujunyuan
 * @date 2018年12月27日  下午2:46:13
 */
@Service
@Transactional(readOnly=false,rollbackFor=Exception.class)
public class HomeServiceImpl extends BaseServiceImpl<Banner> implements HomeService {

	@Value("${fastdfsUrl}")
	private String fastdfsUrl;
	@Autowired
	private OrderMapper orderMapper;
	@Autowired
	private BannerMapper bannerMapper;
	@Autowired
	private ArticleMapper articleMapper;
	@Autowired
	private DictMapper dictMapper;
	
	/**
	 * 首页销售明星详情
	 * @author wujunyuan
	 * @date 2018年12月27日  上午10:33:58
	 * @param time 本日明星=1   本周明星=2
	 * @param userType 电工明星=3   分销明星=2 代理明星=1
	 * @return
	 */
	@Override
	public Map<String, Object> salesStar(Integer time, Integer userType) {
		//校验参数
		if(time==null||time>2||time<1) {
			return ResponseUtil.ajaxCheckError(ResultMessage.PARAMETER_ERROR, "time error");
		}
		if(userType==null||userType>3||userType<1) {
			return ResponseUtil.ajaxCheckError(ResultMessage.PARAMETER_ERROR, "userType error");
		}
		//查询销售明星列表
		List<Map<String,Object>> result = orderMapper.findSalesStar(time,userType);
		//处理图片
		if(result!=null&&!result.isEmpty()) {
			for (Map<String, Object> map : result) {
				if(map!=null&&!map.isEmpty()) {
					Object avatarUrl = map.get("avatarUrl");
					if(avatarUrl!=null&&StringUtils.isNotBlank(avatarUrl.toString())) {
						map.put("avatarUrl", this.getPic(avatarUrl.toString()));
					}
				}
			}
		}
		
		//销售明星功能开关   0=关 1=开
		String saleStarSwitch = dictMapper.getVal("saleStarSwitch");
		
		Map<String,Object> map = new HashMap<>();
		map.put("result", result);
		map.put("saleStarSwitch", saleStarSwitch);
		
		return ResponseUtil.ajaxCheckSuccess(ResultMessage.OK, map);
	}
	
	/**
	 * 拼接图片域名
	 * @author gujiahua
	 * 2018年11月28日 上午11:28:03
	 * @param pic
	 * @return
	 */
	private String getPic(String pic){
		if(!CheckUtil.checkUrl(pic)){
			pic =  fastdfsUrl+pic;
		}
		return pic;
	}

	/**
	 * 获取首页图片
	 * @author wujunyuan
	 * @date 2018年12月27日 下午3:11:04
	 * @param type 0=引导图 1=轮播图 2=图标
	 * @return
	 */
	@Override
	public Map<String, Object> getBannerPic(Integer type) {
		//校验参数
		if(type==null||type<0||type>2) {
			return ResponseUtil.ajaxCheckError(ResultMessage.PARAMETER_ERROR, "type error");
		}
		//根据type获取图片
		List<Map<String,Object>> result = bannerMapper.getBannerPic(type);
		//处理图片
		if(result!=null&&!result.isEmpty()) {
			for (Map<String, Object> map : result) {
				if(map!=null&&!map.isEmpty()) {
					Object pic = map.get("pic");
					if(StringUtils.isNotBlank(pic.toString())) {
						map.put("pic", this.getPic(pic.toString()));
					}
				}
			}
		}
		//隐藏企业视频
		Iterator<Map<String,Object>> iterator = result.iterator();
		while(iterator.hasNext()) {
			Map<String,Object> m = iterator.next();
			if(m.get("title").equals("企业视频")) {
				iterator.remove();
			}
		}
		return ResponseUtil.ajaxCheckSuccess(ResultMessage.OK, result);
	}

	/**
	 * 根据文章id获取文章图片详情
	 * @author wujunyuan
	 * @date 2018年12月27日 下午3:42:20
	 * @param articleId 文章id
	 * @return
	 * @throws IOException 
	 */
	@Override
	public Map<String, Object> getBannerPicDetails(String articleId) throws IOException {
		//校验参数
		if(StringUtils.isBlank(articleId)){
			return ResponseUtil.ajaxCheckError(ResultMessage.PARAMETER_ERROR,"articleId error");
		}
		//根据文章id获取文章图片详情
		Map<String,Object> map = articleMapper.getArticleById(articleId);
																		   //若文章是企业视频
		if(map!=null && map.get("id")!=null && map.get("content")!=null && map.get("id").equals("e21")){
			map.put("content", getPic(map.get("content").toString()));
		}
		// 处理图片
//		if (result != null && !result.isEmpty()) {
//			for (Map<String, Object> map : result) {
//				if (map != null && !map.isEmpty()) {
//					Object picture = map.get("picture");
//					if (StringUtils.isNotBlank(picture.toString())) {
//						map.put("picture", this.getPic(picture.toString()));
//						//设置图片宽高
//						putPicWidthAndHeight(map,map.get("picture").toString());
//					}
//				}
//			}
//		}
		return ResponseUtil.ajaxCheckSuccess(ResultMessage.OK, map);
	}
	
	/**
	 * 设置图片的长度与高度
	 * @author chenluqiang
	 * @date 2019年1月2日 上午10:23:30 
	 * @param urlStr
	 * @throws IOException
	 */
	/*private void putPicWidthAndHeight(Map<String,Object> map,String urlStr) throws IOException {
		try {
			 URL url = new URL(urlStr);
		     URLConnection connection = url.openConnection();
		     connection.setDoOutput(true);
		     BufferedImage image = ImageIO.read(connection.getInputStream());  
		     int srcWidth = image .getWidth();      // 源图宽度
		     int srcHeight = image .getHeight();    // 源图高度
		
		     map.put("srcWidth", srcWidth);
		     map.put("srcHeight", srcHeight);
		     
		}catch (FileNotFoundException e) {
			 map.put("srcWidth","0px");
		     map.put("srcHeight","0px");
		}
	}*/
}
